<?php
class User_upload_model extends CI_Model{
	
	function __construct(){
		parent::__construct();
		$this->load->database();
	}
	
	/**
	 * 	GUARDA LA INFORMACION DE UNA PELICULA
	 * 
	 * 	@param	array $params					Parametros POST enviados
	 * 	
	 *  @return array
	 */
	public function saveInfoFilm($params){
		$this->load->model('user_model');
		$res	= $this->user_model->getIdUserToken($params);
		$user	= $res->row_array();
		
		$aux;
		//	VALIDA SI ALGUNOS DE LOS SERVIDORES SELECCIONADO YA EXISTE PARA LA PELICULA
		foreach ($params['sel-servers'] as $key => $value) {
			if(!$this->exist('peliculas_fuentes', array('id_pelicula'=>$params['id_film'], 'id_usuario'=>$user['id_usuario'], 'id_servidor'=>$value)))
				$aux = TRUE;
			else
				$aux = FALSE;
		}

		if ($aux) {
			if(is_array($params)){
			
				//	CARGA LAS LIBRERIAS NECESARIAS
				// $this->load->library('uploadfiles');
				// $this->load->library('imageshack');
				$this->load->library('goo');
				
				//	OBTIENE EL ID DEL USUARIO QUE AGREGO LA PELICULA
				
				
				//	OBTIENE ARRAY CON LAS URLS DE LOS TAMAÑOS BIG - MEDIUM - SMALL
				// $res_img_poster	= $this->getPosterUrl($params, 'poster', array('big','medium','small'));
	// 			
				// $URLb = $res_img_poster['big'];
				// $URLm = $res_img_poster['medium'];
				// $URLs = $res_img_poster['small'];
				
				// $URLb	= $res_img_poster['big']['url'];
				// $URLm	= $res_img_poster['medium']['url'];
				// $URLs	= $res_img_poster['small']['url'];
	
				//	ARRAY QUE CONTIENE LOS DATOS DE LA PELICULA A INSERTAR 
				// $data	= array(
								// 'id_usuarios'		=> $user['id_usuario'],
								// 'titulo'			=> $params['title'],
								// 'titulo_limpio'		=> Sys::toAscii($params['title']),
								// 'url_poster_big'	=> $URLb,
								// 'url_poster_medium'	=> $URLm,
								// 'url_poster_small'	=> $URLs,
								// 'fecha_add'			=> date('Y-m-d H:i:s'),
						// );
				if($this->exist('peliculas', array('id_pelicula'=>$params['id_film'], 'prox_estreno'=>'0')))
				{

					$data = array();
					foreach ($params['sel-servers'] as $key => $value) {
						$data[]	= array(
									'id_servidor'	=> $value,
									'id_pelicula'	=> $params['id_film'],
									'id_usuario'	=> $user['id_usuario'],
									'fuente'		=> $this->goo->shorten($params['url_torrent'][$key]),
									'fuente_origen'	=> $params['url_torrent'][$key],
									'idioma'		=> $params['languaje'],
									'subtitulos'	=> $params['subtitle'],
									'formato'		=> $params['format_film'],
									'calidad'		=> $params['quality'],
									'duracion'		=> $params['duration'],
									'tamanio'		=> $params['size'],
									'url_subtitulos'=> $params['url_subtitle'][$key]
						);
					}

					//	INSERTA EL ARRAY $DATA
					$this->db->insert_batch('peliculas_fuentes',$data);
					//	OBTIENE EL ID DEL INSERT
					$id_film	= $this->db->insert_id();
					
					// SI EXISTEN CAPTURAS, GUARDA LA(S) IMAGEN(ES) EN IMAGESHACK, OBTIENE LA URL Y CONSTRUYE EL ARRAY $DATA_SCREEN CON LOS VALORES RECIBIDOS Y LOS INSERTA
					if(isset($_FILES['screenshots']) || isset($params['screenshots'])){
						$url_screen	= $this->getScreenshotUrl($params, 'screenshots', '1280x0');
						if(is_array($url_screen)){
							$data_screen	= array('id_pelicula' => $id_film, 'url_captura' => $url_screen['1280x0'], 'primaria' => 1);
							// $data_screen	= array('id_pelicula' => $id_film, 'url_captura' => $url_screen['1280x0']['url'], 'primaria' => 1);
							$this->db->insert('peliculas_capturas',$data_screen);
						}
					}
					
					//	REGRESA ARRAY CON EL PARAMETRO ID_PELICULA
					return array('id_phash' => $id_film);
				}else return array('id_phash' => FALSE, 'msg'=>'La pelicula se encuentra como proximo estreno y aun no se pueden agregar links.');
			}
		}else return array('id_phash' => FALSE, 'msg'=>'Ya has Agregado un link para el servidor seleccionado, para editar la informacion ve a la opcion del Menu </br></br> Mis Peliculas - Administrar </br></br>');;
		
	}

	/**
	 * 	ACTUALIZA LA INFORMACION DE UNA PELICULA
	 * 
	 * 	@param	array $params					Parametros POST enviados
	 * 
	 * 	@return mixed
	 */
	public function updateInfoFilm($params){
		
		$this->load->model('user_model');
		$res	= $this->user_model->getIdUserToken($params);
		$user	= $res->row_array();
		
		$aux = FALSE;
		if($this->exist('peliculas_fuentes', array('id_phash'=>$params['id_phash'], 'id_pelicula'=>$params['id_film'], 'id_usuario'=>$user['id_usuario'], 'id_servidor'=>$params['sel-servers'][0])))
			$aux = TRUE;
		else
			if(!$this->exist('peliculas_fuentes', array('id_pelicula'=>$params['id_film'], 'id_usuario'=>$user['id_usuario'], 'id_servidor'=>$params['sel-servers'][0])))
				$aux = TRUE;

		if ($aux) {
			$this->load->library('goo');
			$data	= array(
								'fuente'		=> $this->goo->shorten($params['url_torrent'][0]),
								'fuente_origen'	=> $params['url_torrent'][0],
								'idioma'		=> $params['languaje'],
								'subtitulos'	=> $params['subtitle'],
								'formato'		=> $params['format_film'],
								'calidad'		=> $params['quality'],
								'duracion'		=> $params['duration'],
								'tamanio'		=> $params['size'],
								'url_subtitulos'=> $params['url_subtitle'][0]
						);	

			//	ACTUALIZA LA PELICULA CON LOS DATOS DEL ARRAY $DATA
			
			$this->db->where(array('id_phash'=>$params['id_phash'], 'id_usuario'=>$user['id_usuario']));
			$this->db->update('peliculas_fuentes',$data);
			
			$id_film = $params['id_film'];
			
			//	REGRESA ARRAY CON EL PARAMETRO ID_PELICULA
			return array('id_phash' => $params['id_phash']);
		}
		
		//	REGRESA FALSE SI NO EXISTE LA PELICULA A ACTUALIZAR
		return array('id_phash' => FALSE, 'msg'=>'Ya has Agregado un link para el servidor seleccionado, para editar la informacion ve a la opcion del Menu </br></br> Mis Peliculas - Administrar </br></br>');;;
	}

	/**
	 * 	OBTIENE TODA LA INFORMACION DE UNA PELICULA
	 * 
	 * 	@param array $params					Parametros POST enviados
	 * 
	 *	@return mixed
	 */
	public function getInfoFilm($params){
		
		//	VALIDA QUE EXISTA LA FUENTE DE LA PELICULA
		if ($this->exist('peliculas_fuentes', array('id_phash'=>$params['id_phash'], 'id_usuario'=>$params['id_usuario']))) {
			
			//	STRING QUE CONTIENE LOS CAMPOS PARA LA CONSULTA
			$fields	= "pf.id_servidor, pf.id_pelicula, pf.id_usuario, pf.fuente, pf.fuente_origen as url_file, pf.idioma as language, 
					   pf.subtitulos as subtitle, pf.formato as format_film, pf.calidad as quality, pf.duracion as duration, pf.tamanio as size, pf.url_subtitulos as url_subtitle,
					   s.nombre as servidor";

			//	EMPIEZA A CONTRUIR QUERY
			$this->db->select($fields)->from('peliculas_fuentes AS pf')
			->join('servidores AS s', 'pf.id_servidor = s.id_servidor' , 'inner');

			//	AGREGA CLAUSULA WHERE AL QUERY
			$this->db->where(array('pf.id_phash' => $params['id_phash'], 'pf.id_usuario' => $params['id_usuario']));
			
			//	EJECUTA QUERY Y OBTIENE EL RESULTADO
			$query = $this->db->get();
			$result	= $query->result_array();
			// echo '<pre>';
			// var_dump($result);
			// echo '</pre>';
			// exit;
			
			//	REGRESA EL ARRAY CON TODOS LOS PARAMETROS DE $RESULT
			return $result;
		}
		//	REGRESA FALSE SI NO EXISTE LA PELICULA
		return FALSE;
	}	

	/**
	 * Agrega un capitulo a una serie
	 */
	public function addEpisode($params){
		if($this->exist('series_capitulos', array('id_capitulo' => $params['episode']))){
				
			$this->load->library('goo');
			$this->load->model('user_model');
			$res = $this->user_model->getIdUserToken($params);
			//informacion del usuario
			$data_usr = $res->row_array();
			
			$values = array();
			foreach ($params['sel-servers'] as $key => $value) {
				$values[] = array(
					'id_servidor'		=> $value,
					'id_capitulo'		=> $params['episode'],
					'id_usuario' 		=> $data_usr['id_usuario'],
					'fuente'			=> $this->goo->shorten($params['url_torrent'][$key]),
					'fuente_origen'		=> $params['url_torrent'][$key],
					'idioma'			=> $params['languaje'],
					'subtitulos'		=> $params['subtitles'],
					'formato'			=> $params['format_episode'],
					'calidad'			=> $params['quality'],
					'duracion'			=> $params['duration'],
					'tamanio'			=> $params['size'],
					'url_subtitulos'	=> $params['url_subtitle'][$key]
				);
			}
			
			$this->db->insert_batch('series_capitulos_fuentes', $values);
			$id_episode = $this->db->insert_id();
			
			return array(
				'idh_episode' => $id_episode
			);
		}
		return 1;
	}

	/**
	 * Obtiene la informacion de un capitulo de una serie
	 */
	public function getEpisode($params){
		$this->load->model('user_model');
		$res = $this->user_model->getIdUserToken($params);
		$data_usr = $res->row_array();
		if($this->exist('series_capitulos_fuentes', array('id_capitulo' => $params['episode'],'id_usuario'=>$data_usr['id_usuario']))){
				
			$res_episode = $this->db->query("SELECT id_servidor AS server, id_capitulo, no_parte, fuente, fuente_origen, idioma AS language, 
													subtitulos AS subtitle, formato AS format_episode, calidad AS quality, duracion AS duration, 
													tamanio AS size, url_subtitulos 
											FROM series_capitulos_fuentes
											WHERE id_capitulo=".$params['episode']." AND id_usuario=".$data_usr['id_usuario']." AND id_chash=".$params['id_chash']);
			$date_episode = $res_episode->result_array();
			
			return $date_episode;
		}
		return 1;
	}

	/**
	 * Actualiza un episodio
	 */
	public function updateEpisode($params){
		$this->load->model('user_model');
		$res = $this->user_model->getIdUserToken($params);
		$data_usr = $res->row_array();

		$aux = FALSE;
		if($this->exist('series_capitulos_fuentes', array('id_chash'=>$params['id_chash'], 'id_capitulo'=>$params['episode'], 'id_usuario'=>$data_usr['id_usuario'], 'id_servidor'=>$params['sel-servers'][0])))
			$aux = TRUE;
		else
			if(!$this->exist('series_capitulos_fuentes', array('id_capitulo'=>$params['episode'], 'id_usuario'=>$data_usr['id_usuario'], 'id_servidor'=>$params['sel-servers'][0])))
				$aux = TRUE;

			// $this->exist('series_capitulos_fuentes', array('id_capitulo' => $params['episode'], 'id_usuario'=>$data_usr['id_usuario']))
		if($aux){
				
			$this->load->library('goo');
			
			$values = array(
				// 'id_servidor'		=> $params['sel-servers'],
				// 'id_capitulo'		=> $params['episode'],
				// 'id_usuario' 		=> $data_usr['id_usuario'],
				'fuente'			=> $this->goo->shorten($params['url_torrent'][0]),
				'fuente_origen'		=> $params['url_torrent'][0],
				'idioma'			=> $params['languaje'],
				'subtitulos'		=> $params['subtitles'],
				'formato'			=> $params['format_episode'],
				'calidad'			=> $params['quality'],
				'duracion'			=> $params['duration'],
				'tamanio'			=> $params['size'],
				'url_subtitulos'	=> $params['url_subtitle'][0]
			);
			
			$this->db->where(array('id_chash' => $params['id_chash'], 'id_usuario'=>$data_usr['id_usuario']));
			$this->db->update('series_capitulos_fuentes', $values);
			
			$id_chash = $params['id_chash'];
			
			return array('id_chash' => $id_chash);
		}
		return array('id_chash' => FALSE, 'msg' => 'Ya has Agregado un link para el servidor seleccionado, para editar la informacion ve a la opcion del Menu </br></br> Mis Series - Administrar </br></br>');
	}



	private function exist($table, $sql, $return_res=false){
		$res = $this->db->get_where($table, $sql);
		if($res->num_rows() > 0){
			if($return_res)
				return $res->row();
			return TRUE;
		}
		return FALSE;
	}

}
